home *** CD-ROM | disk | FTP | other *** search
/ User's Choice Windows CD / User's Choice Windows CD (CMS Software)(1993).iso / win_m_p / pwez51.zip / DEMO.BAS next >
BASIC Source File  |  1992-04-01  |  66KB  |  1,690 lines

  1. 3 '!!!!!!!!!!!! ** [ READ THIS ] ** !!!!!!!!  ** [ READ THIS ] !!!!!!!!!!!!!!!
  2. '!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  3. '!!! THIS MODULE WILL NOT OPERATE AS A STAND-ALONE PROGRAM. IT MUST BE   !!!
  4. '!!! LOADED WITH MODULE DEMPART2.BAS.  DEMO.BAS MUST BE THE MAIN MODULE. !!!
  5. '!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  6. '***************************************************************************
  7. '**** THIS PROGRAM MUST BE USED WITH ONE OF THE FOLLOWING LIBRARIES:    ****
  8. '***************************************************************************
  9. '**** For QB4.+ unenhanced version use QB4UNEN.QLB                      ****
  10. '**** For BASIC 7.+ unenhanced version use PDSUNEN.QLB                  ****
  11. '**** For QB4.50 enhanced version use QBALL45.QLB or QBNER45.QLB        ****
  12. '**** For QB4.00/4.00b enhanced version use QBALL40.QLB or QBNER40.QLB  ****
  13. '**** For BASIC 7.0 enhanced version use PDSALL70.QLB or PDSNER70.QLB   ****
  14. '**** For BASIC 7.1 enhanced version use PDSALL71.QLB or PDSNER71.QLB   ****
  15. '**** Load QB or QBX with the /L option using the correct library       ****
  16. '***************************************************************************
  17. '----------------------------------------------------------------------------
  18. '---------------------- Windows R-E-Z Demonstration -------------------------
  19. '---------------------- CONNECT Software ------------------------------------
  20. '---------------------- Apr. 01, 1992 ---------------------------------------
  21. '----------------------------------------------------------------------------
  22. '---------------------- Copyright 1988,1989,1990,1991,1992 ------------------
  23. '---------------------- By: CONNECT Software --------------------------------
  24. '---------------------- All rights reserved ---------------------------------
  25. '----------------------------------------------------------------------------
  26. '            **** VER 5.10 ------- LAST UPDATE ------- 04/01/1992 ****
  27. '****************************************************************************
  28. DECLARE SUB B4SCRL (EXIT$, MARK$)
  29. DECLARE SUB CHNGPULL (BAR%, WIND%, ATTR%)
  30. DECLARE SUB CHNGWIND (W%)
  31. DECLARE SUB CLRWIND ()
  32. DECLARE SUB DELWIND (W%)
  33. DECLARE SUB DISKSIZE (DISK%, DISKSZE&, FREESPACE&)
  34. DECLARE SUB DOSOUND ()
  35. DECLARE SUB FINDPATH (PATH$)
  36. DECLARE SUB FINDDIR (PATH$, TYPE$, F%)
  37. DECLARE SUB GETANS (TEXT$, CHOICE$, ANS$, TR%, LC%, ATTR%, BORDER%)
  38. DECLARE SUB GETDISK (DR%)
  39. DECLARE SUB INFOFIXED (FIXED$)
  40. DECLARE SUB INFOLINE (TR%, LC%, WD%, ATTR%)
  41. DECLARE SUB INPTINIT (DTYPE%, ISDOT%, INPTEXIT$)
  42. DECLARE SUB INPTWIND (PROMPT$, CODE$, TR%, LC%, WD%, ATTR%, RESTRICT$, RTRN$, RK%, BRD%)
  43. DECLARE FUNCTION KEYMOUSE% ()
  44. DECLARE SUB LINEW (ROW%, TYP%)
  45. DECLARE SUB MAKEWIND (W%, LABEL$, TR%, LC%, WD%, NR%, ATTR%, BORDER%)
  46. DECLARE FUNCTION MARKED% (RTRN$, START%)
  47. DECLARE SUB MBUTTONS (LBUTTON%, RBUTTON%)
  48. DECLARE SUB MOUSEON (ONFLAF%)
  49. DECLARE SUB MULTINPT (SCRN%, FLD%, EXIT$, AUTOEXIT%, RKEY%, RTRN$())
  50. DECLARE SUB NEWCOLOR (ATTR%)
  51. DECLARE SUB PRINTINFO (I$)
  52. DECLARE SUB PRINTW (TEXT$, TR%, LC%)
  53. DECLARE SUB PULLDOWN (INFO$(), A%, B%, EXIT$, RKEY%, ATTR%, HATTR%, BORDER%)
  54. DECLARE SUB RESAVE ()
  55. DECLARE SUB RSTRINFO (DELFLAG%)
  56. DECLARE SUB RSTRINPT (DELFLAG%)
  57. DECLARE SUB RSTRPULL (RSTRMBAR%)
  58. DECLARE SUB RSTRWIND (W%, DELFLAG%)
  59. DECLARE SUB SAVEWIND (W%, TR%, LC%, WD%, NR%)
  60. DECLARE SUB SCRLWIND (LIST$(), INFO$(), TOPLINE$, ENTRIES%, RTRN$, RTRN%, LI%, FC%, RKEY%, HIATTR%)
  61. DECLARE SUB SETDISK (DRIVE%, BADFLAG%)
  62. DECLARE SUB SETINPT (SCRN%, WD%, EXIT$, INPT%(), INPT$(), BACKCOL%)
  63. DECLARE SUB SETPULL (TR%, LC%, WD%, PWIND$())
  64. DECLARE SUB SETSCRL (ARROW%, NOHI%, TAGCOLOR%)
  65. DECLARE SUB SETWIND (FAST%, SND%, SHADCOL%)
  66. DECLARE FUNCTION WAVAIL% (W%)
  67. DECLARE SUB WINDSTATUS ()
  68. '***************************************************************************
  69. DECLARE SUB SOUNDDEMO (WIND%)
  70. DECLARE SUB COLORDEMO (WIND%)
  71. DECLARE SUB PRINTDEMO ()
  72. DECLARE SUB PRINTSPEED (WIND%)
  73. DECLARE SUB SETPARAMETERS ()
  74. DECLARE SUB INPUTWINDOWDEMO ()
  75. DECLARE SUB MULTINPUTDEMO2 ()
  76. DECLARE SUB MULTINPUTDEMO1 ()
  77. DECLARE SUB SETDATEDEMO ()
  78. DECLARE SUB SCROLLDEMO (W%)
  79. DECLARE SUB WINDOWDEMO ()
  80. DECLARE SUB GETANSDEMO ()
  81. DECLARE FUNCTION COL% (C%)
  82.  
  83. '----------  MUST BE IN ANY MODULE USING "FINDDIR" DIRECTORY ROUTINE --------
  84. TYPE DIREC
  85.   SIZE AS LONG              ' SIZE
  86.   DATE AS STRING * 10       ' DATE
  87.   TIME AS STRING * 6        ' TIME
  88.   ATTR AS INTEGER           ' ATTRIBUTE
  89. END TYPE
  90. COMMON SHARED /DIRECTORY/ DIREC$(), DIRINFO() AS DIREC
  91. DIM SHARED DEMOATTR%, DFORMAT%, DECPOINT%, COLCHOICE%, LOCHOICE%
  92. DIM SHARED FAST%, SND%, SHADCOL%, NOHI%, SCROLLARROW%
  93. '--------------------------- DIMENSION ARRAYS -------------------------------
  94. DIM SHARED CHNGRTRN$(11)                       ' FOR "CHANGE" MULTINPT
  95. CHNGRTRN$(8) = "Find and Verify"
  96. CHNGRTRN$(9) = "Change All"
  97. CHNGRTRN$(10) = "Cancel"
  98. CHNGRTRN$(11) = "Help"
  99. CHNGRTRN$(5) = CHR$(4)
  100.  
  101. DIM SHARED DUMMY$(0 TO 0)                      ' NEEDED BY SCRLWIND ROUTINE
  102.  
  103. DIM SHARED MRTRN1$(20), MRTRN2$(10)            ' FOR MULTI-FIELD INPUT DEMO
  104. DIM SHARED COLCHOICE$(4), LOCHOICE$(4)         ' "                       "
  105.  
  106. MRTRN1$(5) = "RED"                             ' # 1 MULTI-FIELD INPUT SCREEN
  107. MRTRN1$(6) = "NORTH"                           '  "
  108. COLCHOICE$(1) = "RED"                          '  "
  109. COLCHOICE$(2) = "PURPLE"                       '  "
  110. COLCHOICE$(3) = "YELLOW"                       '  "
  111. COLCHOICE$(4) = "GREEN"                        '  "
  112. LOCHOICE$(1) = "NORTH"                         '  "
  113. LOCHOICE$(2) = "SOUTH"                         '  "
  114. LOCHOICE$(3) = "EAST"                          '  "
  115. LOCHOICE$(4) = "WEST"                          '  "
  116. COLCHOICE% = 1: LOCHOICE% = 1                  '  "
  117.  
  118. MRTRN2$(1) = "CONNECT SOFTWARE"                ' # 2 MULTI-FIELD INPUT SCREEN
  119. MRTRN2$(2) = "6192 FAWN MEADOW"                '  "
  120. MRTRN2$(3) = "FARMINGTON, NY"                  '  "
  121. MRTRN2$(4) = "14425"                           '  "
  122. MRTRN2$(6) = "123,1"                           '  "
  123. MRTRN2$(7) = "123,12"                          '  "
  124. MRTRN2$(8) = "123,123"                         '  "
  125.  
  126. DIM LAN$(4), DISK$(2), ORDER$(19)              ' FOR ORDER FORM
  127.  
  128. LAN$(1) = "QuickBASIC 4.5"                    '  "
  129. LAN$(2) = "QuickBASIC 4.00/.00b"                    '  "
  130. LAN$(3) = "BASIC 7.0 - PDS"                    '  "
  131. LAN$(4) = "BASIC 7.1 - PDS"                    '  "
  132. LAN% = 1: ORDER$(9) = LAN$(1)                 '  "
  133.                                               
  134.  
  135. DISK$(1) = "5.25 inch - 360K"                  '  "
  136. DISK$(2) = "3.5 inch - 720K"                   '  "
  137. DSIZE% = 1: ORDER$(10) = DISK$(1)              '  "
  138.  
  139. '------ ARRAY REPRESENTING ALLOWABLE DATE FORMATS FOR INPUT ROUTINES --------
  140.  
  141. DIM SHARED DATETYPE$(5)
  142. DATETYPE$(1) = "mm-dd-yyyy"
  143. DATETYPE$(2) = "mm/dd/yyyy"
  144. DATETYPE$(3) = "dd-mm-yyyy"
  145. DATETYPE$(4) = "dd/mm/yyyy"
  146. DATETYPE$(5) = "dd.mm.yyyy"
  147.  
  148. '----------------------------------------------------------------------------
  149. REALSTART:
  150. PREFLAG% = 1: A% = 15
  151. ON ERROR GOTO DISKERROR
  152.    FINDPATH PATH$                     ' FIND PRESENT DISK AND  PATH
  153.    PREFLAG% = 0
  154. ON ERROR GOTO 0
  155. MOUSEON (1)                           ' TURN THE MOUSE ON
  156. MBUTTONS 13, 27                       ' LEFT BUTTON = ESC / RIGHT = RETURN
  157. WIDTH 80
  158. CLS
  159.  
  160. '--------------------- SET DATA FOR SCROLL WINDOW DEMO ----------------------
  161. DIM SHARED SCROLL$(14)                    ' READ DATA FOR SCROLL WINDOW DEMO
  162.  
  163. FOR X% = 1 TO 14                   '              "
  164.    READ SCROLL$(X%)                '              "
  165. NEXT                               '              "
  166.  
  167. 'DATA FOR SCROLL WINDOW DEMO
  168. DATA This is a sample of a scroll window.
  169. DATA The A@RROW keys or different colored
  170. DATA letter can be pressed to make a sel-
  171. DATA ection.  REGULAR scroll windows exit
  172. DATA when ENTER is pressed.  AUTO-EXIT
  173. DATA scroll windows exit if the letter
  174. DATA pressed is found.  END / HOME / PGUP
  175. DATA and PGDN keys respond as ex@pected.
  176. DATA MARK scroll windows mark or unmark
  177. DATA items in the window with the "+"
  178. DATA or "-" keys.  The PRINT k@ey or the
  179. DATA SPACE B@AR  marks or unmarks all
  180. DATA items.  Press ECS to return to the
  181. DATA pulldown@ menu.
  182.  
  183. '-------------- SET DATA FOR VIRTUAL SCROLL WINDOW DEMO ---------------------
  184.  
  185. DIM SHARED ADDRESS$(1 TO 10)
  186. FOR X% = 1 TO 10                ' READ DATA FOR VIRTUAL SCROLL WINDOW DEMO
  187.    READ ADDRESS$(X%)
  188. NEXT
  189.  
  190. 'DATA FOR VIRTUAL SCROLL WINDOW DEMO
  191. DATA CONNECT Software        6192 Fawn Meadow      Farmington    NY    14425
  192. DATA Dell Computer Corp      9505 Arboretum Blvd   Austin        TX    78759
  193. DATA Micro Warehouse         1690 Oak St           Lakewood      NJ    08701
  194. DATA ZEOS                    530  Fifth Ave  NW    St Paul       MN    55112
  195. DATA Microsoft Press         21919 20th Ave SE     Bothell       WA    95041
  196. DATA Central Point Software  Greenbrier Pkwy       Oregon        OR    97006
  197. DATA Eastman Kodak Corp      343 State St          Rochester     NY    14650
  198. DATA National Instruments    6504 Bridge Pt Pkwy   Austin        TX    73730
  199. DATA Gateway Computers       610 Gateway Dr        N Souix City  SD    57049
  200. DATA Microsoft Corporation   One Microsoft Way     Redmond       VA    98052
  201.  
  202. '-------------------- SET DATA FOR PULLDOWN WINDOWS -----------------------
  203.  
  204. B% = 200
  205. REDIM PWIND$(B%)                                   ' READ DATA FOR
  206.                                                    ' PULLDOWN MENUBAR AND
  207. WHILE PWIND$(TEMP%) <> "ENDPULL"                   ' PULLDOWN WINDOWS.
  208.   TEMP% = TEMP% + 1
  209.   READ PWIND$(TEMP%)
  210. WEND
  211.  
  212. 'PULLDOWN WINDOW #1
  213. DATA Windows, Scroll - Get Answer and more         : 'MENUBAR & INFOLINE
  214.  
  215. ' ** NOTE: IF INFO-LINE IS NOT USED THIS WOULD BE THE FIRST DATA LINE:
  216. ' DATA Windows,
  217.  
  218. DATA Window Management System   (F1), Get answer windows         (F2) : 'WINDOW #1 SELECTIONS
  219. DATA Scroll windows                ,-, Ex@it, ***
  220.  
  221. 'PULLDOWN WINDOW #2
  222. DATA Input, Single and Multi-field Input           : 'MENUBAR & INFOLINE
  223. DATA Select date format                            : 'WINDOW'S ITEMS
  224. DATA Multi-field input, Look familiar?
  225. DATA Input window, ***
  226.  
  227. 'PULLDOWN WINDOW #3
  228. DATA Print,Print in windows.                       : 'MENUBAR & INFOLINE
  229. DATA Print in M@ultiple windows, -                 : 'WINDOW'S ITEMS
  230. DATA Slow print ( Eliminates screen snow. )
  231. DATA Fast print,***
  232.  
  233. 'PULLDOWN WINDOW #4
  234. DATA Directory,Several Features                    : 'MENUBAR & INFOLINE
  235. DATA Directory routines,***                        : 'WINDOW'S ITEMS
  236.  
  237. 'PULLDOWN WINDOW #5
  238. DATA Color,Set Display Type                        : 'MENUBAR & INFOLINE
  239. DATA Black and white,Color                         : 'WINDOW'S ITEMS
  240. DATA No hi-intensity (Black & white),***
  241.  
  242. 'PULLDOWN WINDOW #6
  243. DATA Sound,Set sound                               : 'MENUBAR & INFOLINE
  244. DATA Beep,Click,No sound,***                       : 'WINDOW'S ITEMS
  245.  
  246. 'PULLDOWN WINDOW #7
  247. DATA Order Me,*** Important!!! ***                 : 'MENUBAR & INFOLINE
  248. DATA Make an order form,***                        : 'WINDOW'S ITEMS
  249.  
  250. DATA ENDPULL                                       : 'END OF PULLDOWN DATA
  251.  
  252. SETPULL 2, 9, 60, PWIND$()           ' SET UP PULLDOWN WINDOWS
  253. ERASE PWIND$                         ' ERASE TEMPORARY ARRAY HOLD-
  254.                                      ' ING PULLDOWN WINDOW DATA.
  255.  
  256. '------------- SET DATA FOR INFO-LINE FOR PULLDOWN WINDOWS ------------------
  257. ' ** NOTE: THIS IS NOT REQUIRED IF INFO-LINE IS NOT USED
  258.  
  259. DIM SHARED PULLINFO$(21)                   ' INFO-LINE DATA
  260. FOR X% = 1 TO 21                           ' READ DATA FOR EACH PULLDOWN
  261.    READ PULLINFO$(X%)                      ' WINDOW'S INFO-LINE
  262. NEXT
  263.  
  264. 'INFO-LINE DATA FOR PULLDOWN WINDOW #1             
  265. DATA "Make, save and restore windows.", Get a single key user response.
  266. DATA  Several types of scroll windows.,,End demonstration.
  267.  
  268. 'INFO-LINE DATA FOR PULLDOWN WINDOW #2
  269. DATA Set date format for input routines., Two sample multi-field input screens.
  270. DATA Multi-field versatility., Variations of single field input windows.
  271.  
  272. 'INFO-LINE DATA FOR PULLDOWN WINDOW #3
  273. DATA Displays print features.,, Required by certain CGA adaptors.
  274. DATA "Use with all VGA, EGA, MONO and most CGA adaptors."
  275.  
  276. 'INFO-LINE DATA FOR PULLDOWN WINDOW #4
  277. DATA Several useful directory routines.
  278.  
  279. 'INFO-LINE DATA FOR PULLDOWN WINDOW #5
  280. DATA Use with MONO monitors., Use with color monitors., Use with LCD displays.
  281.  
  282. 'INFO-LINE DATA FOR PULLDOWN WINDOW #6
  283. DATA Sound for all routines., Sound for all routines., Sound for all routines.
  284.  
  285. 'INFO-LINE DATA FOR PULLDOWN WINDOW #7
  286. DATA Make an order form for WINDOWS R-E-Z.....
  287.  
  288. DIM SHARED SUBSCROLL$(5)
  289. SUBSCROLL$(1) = "Regular Scroll window"
  290. SUBSCROLL$(2) = "Auto-exit Scroll window"
  291. SUBSCROLL$(3) = "Mark Scroll window"
  292. SUBSCROLL$(4) = "Virtual Scroll window"
  293. SUBSCROLL$(5) = "List virtual scroll window"
  294.  
  295. '--------------- CALL SET UP ROUTINE FOR FIRST INPUT SCREEN -----------------
  296.  
  297. A% = 150: REDIM INPT%(A%)                ' INPT%() AND INPT$ HOLD DATA
  298. A% = 25: REDIM INPT$(A%)                 ' FOR FIELDS
  299. Y% = 1: FLD% = 1
  300.  
  301. DO                                       ' READ THE DATA FOR THE MULT-FIELD
  302.    READ INPT%(Y%)                        ' INPUT ROUTINE.
  303.    IF INPT%(Y%) = 9999 THEN EXIT DO
  304.    Y% = Y% + 1
  305.    FOR XX% = 1 TO 5
  306.       READ INPT%(Y%)
  307.       Y% = Y% + 1
  308.    NEXT
  309.       READ INPT$(FLD%)
  310.       FLD% = FLD% + 1
  311. LOOP
  312.  
  313. ' DATA FOR EACH FIELD
  314. DATA 0,6,5,10,15,99,""
  315. DATA 10,8,5,10,15,99,""
  316. DATA 1,6,20,10,15,99,""
  317. DATA 2,6,35,10,15,99,""
  318.  
  319. DATA 30007,6,58,12,15,99,""
  320. DATA 30007,8,58,12,15,99,""
  321.  
  322. DATA 17,11,5,20,15,99,""
  323. DATA 27,11,31,20,15,99,""
  324. DATA 7,11,55,20,15,99,""
  325.  
  326. DATA 1017,16,22,1,15,99,"MF"
  327. DATA 1017,16,38,1,15,99,"YN"
  328.  
  329. DATA 1010,16,60,3,15,99,""
  330. DATA 1010,16,64,2,15,99,""
  331. DATA 1010,16,67,4,15,99,""
  332.  
  333. DATA 21000,21,23,6,15,99,""
  334. DATA 21000,21,38,6,15,99,""
  335. DATA 100,21,53,7,15,99,""
  336.  
  337. DATA 9999
  338.  
  339. SETINPT 1, 80, "012", INPT%(), INPT$(), 0   ' SET UP MULTI-INPUT SCREEN #1
  340.  
  341. ERASE INPT%, INPT$                          ' GET THE MEMORY BACK
  342.  
  343. ' -------- READ DATA FOR CHANGE INPUT SCREEN AND SET UP SAME ---------------
  344.  
  345. A% = 200: DIM INPT%(A%)                     ' DIM ARRAYS TO HOLD DATA
  346. B% = 20: DIM INPT$(B%)                      ' FOR EACH FIELD
  347.  
  348. FLD% = 0: B% = 1                            ' READ THE DATA FOR THE
  349. DO                                          ' MULT-FIELD INPUT ROUTINE.
  350.   FLD% = FLD% + 1
  351.   READ INPT%(FLD%)
  352.   IF INPT%(FLD%) = 9999 THEN EXIT DO
  353.   FOR X% = 1 TO 5
  354.     FLD% = FLD% + 1
  355.     READ INPT%(FLD%)
  356.   NEXT
  357.   READ INPT$(B%): B% = B% + 1
  358. LOOP
  359.  
  360. ' DATA FOR EACH FIELD
  361. DATA 10007,8,26,41,112,99,""          : 'Field 1 = Find What:
  362. DATA 10007,11,26,41,112,99,""         : 'Field 2 = Change To:
  363. DATA 30007,14,14,1,112,99,""          : 'Field 3 = Match Upper/Lowercase
  364. DATA 30007,15,14,1,112,99,""          : 'Field 4 = Whole Word
  365. DATA 30007,14,46,1,112,99,""          : 'Field 5 = Active Window
  366. DATA 30007,15,46,1,112,99,""          : 'Field 6 = Current Module
  367. DATA 30007,16,46,1,112,99,""          : 'Field 7 = All Modules
  368. DATA 30007,19,15,15,112,99,""         : 'Field 8 = Find and Verify
  369. DATA 30007,19,35,10,112,99,""         : 'Field 8 = Change All
  370. DATA 30007,19,50,6,112,99,""          : 'Field 10 = Cancel
  371. DATA 30007,19,61,4,112,99,""          : 'Field 11 = Help
  372.  
  373. DATA 9999
  374.                          
  375. SETINPT 3, 80, "E", INPT%(), INPT$(), 0  ' SET UP MULTI-FIELD INPUT - SCREEN 3
  376.  
  377. ERASE INPT%, INPT$                       ' GET MEMORY BACK
  378.  
  379. '--------- READ DATA FOR THE ORDER FORM INPUT SCREEN AND SET UP SAME -------
  380.  
  381. A% = 151: B% = 25
  382. REDIM INPT%(A%), INPT$(B%)
  383. Y% = 1: FLD% = 1
  384.  
  385. DO
  386.   READ INPT%(Y%)
  387.   IF INPT%(Y%) = 9999 THEN EXIT DO
  388.   Y% = Y% + 1
  389.   FOR XX% = 1 TO 5
  390.     READ INPT%(Y%)
  391.     Y% = Y% + 1
  392.   NEXT
  393.   READ INPT$(FLD%)
  394.   FLD% = FLD% + 1
  395. LOOP
  396.                    '***** FIELD DATA FOR ORDER FORM  ******
  397.  
  398. DATA 10007,5,14,32,15,99,""
  399. DATA 10007,7,14,32,15,99,""
  400. DATA 10007,9,14,32,15,99,""
  401. DATA 10007,11,14,32,15,99,""
  402. DATA 10010,13,14,5,15,99,""
  403. DATA 10008,5,56,10,15,99,""
  404. DATA 10017,7,69,1,15,99,"YN"
  405. DATA 10000,9,69,5,15,99,""
  406. DATA 30007, 15, 25, 20, 15, 99, ""
  407. DATA 30007,15,58,20,15,99,""
  408. DATA 11017,17,33,1,15,99,"YN"
  409. DATA 10007,22,24,20,15,99,"1234567890 "
  410. DATA 10007,22,63,5,15,99,"1234567890/"
  411. DATA 9999
  412. SETINPT 4, 80, "10", INPT%(), INPT$(), 0   ' SET UP MULTI-INPUT SCREEN #4 AND
  413. ERASE INPT%, INPT$                         ' ERASE TEMPORARY ARRAYS
  414.  
  415. '------------------ WINDOW AND INPUT INITIALIZATION -------------------------
  416.  
  417. FAST% = 1                      ' FAST PRINT
  418. SND% = 1                       ' "CLICK" SOUND
  419. SHADCOL% = 7                   ' BLACK/WHITE WINDOW SHADOWS
  420. NOHI% = 0                      ' HI-INTENSITY ON
  421. SCROLLARROW% = 1               ' SCROLL ARROW ON
  422.  
  423. CALL SETPARAMETERS            ' INITIALIZE WINDOW ROUTINE'S PARAMETERS
  424.  
  425. DECPOINT% = 1                  ' USE A PERIOD AS DECIMAL DESIGNATOR
  426. DATETYPE$ = "mm-dd-yyyy"       ' REPRESENTS DATE FORMAT #1
  427. DFORMAT% = 1                   ' DATE FORMAT #1 = mm-dd-yyyy
  428.  
  429. CALL INPTINIT(DFORMAT%, DECPOINT%, "")
  430.  
  431. '----------------------------- INTRODUCTION SCREEN --------------------------
  432.  
  433. PREINTRO:
  434.  IF SHADCOL% = 7 THEN A% = 112 ELSE A% = 116
  435.  
  436.  MAKEWIND 0, "@WINDOWS R-E-Z Version 5.10  --- 04/01/1992", 1, 1, 80, 25, A%, 102
  437.  
  438.  FOR XX% = 1 TO 21 STEP 2
  439.     PRINTW "WINDOWS R-E-Z ────── WINDOWS R-E-Z ────── WINDOWS R-E-Z ────── WINDOWS R-E-Z", XX%, 2
  440.     IF XX% <> 21 THEN PRINTW STRING$(76, 176), XX% + 1, 2
  441.  NEXT
  442.  IF INTROPASS% = 1 THEN GOTO PREMAIN.MENU
  443.  
  444.  MAKEWIND 2, "@*** New for Version 5.10 ***", 100, 100, 65, 18, 15, 111
  445.  PRINTW "- User defineable exit keys in SCROLL and PULLDOWN windows.", 2, 2
  446.  PRINTW "- Extendable SCROLL windows allow scrolling large data files.", 3, 2
  447.  PRINTW "- Increased versatility in GET ANSWER routine.", 4, 2
  448.  LINEW 6, 2
  449.  PRINTW "NOTE: THIS DEMONSTRATION WAS WRITTEN IN IT'S ENTIRETY WITH", 8, 100
  450.  PRINTW "      QB/QBX AND WITH ROUTINES PROVIDED WITH WINDOWS R-E-Z.", 9, 100
  451.  LINEW 11, 2
  452. ONE:
  453.  ANS$ = ""
  454.  GETANS "Color or Monochrome? (C/M)", "CM", ANS$, 18, 100, 143, 12
  455.  
  456.  IF ANS$ = CHR$(27) THEN GOTO ONE
  457.  IF ANS$ = "M" THEN
  458.    DEMOATTR% = 112
  459.      SHADCOL% = 7
  460.  ELSE
  461.      CHNGPULL 5, 1, 0
  462.      DEMOATTR% = 0
  463.      SHADCOL% = 8
  464.  END IF
  465.  CALL SETPARAMETERS
  466.  RSTRWIND 2, 1
  467.  INTROPASS% = 1: GOTO PREINTRO
  468.  
  469. '----------------- SET DATA FOR SECOND MULTI-FIELD INPUT SCREEN -------------
  470.  
  471. PREMAIN.MENU:
  472.  
  473. '--------------- CALL SET UP ROUTINE FOR SECOND INPUT SCREEN ---------------
  474.  
  475.   RESTORE PREMAIN.MENU
  476.   A% = 120: REDIM INPT%(A%)                ' INPT%() AND INPT$ HOLD DATA
  477.   A% = 20: REDIM INPT$(A%)                 ' FOR FIELDS
  478.  
  479.   Y% = 1: FLD% = 1: z% = 112
  480.   DO
  481.     READ INPT%(Y%)
  482.     IF INPT%(Y%) = 9999 THEN EXIT DO
  483.     Y% = Y% + 1
  484.     FOR XX% = 1 TO 5
  485.        READ INPT%(Y%)
  486.        Y% = Y% + 1
  487.     NEXT
  488.        READ INPT$(FLD%)
  489.        FLD% = FLD% + 1
  490.   LOOP
  491.  
  492.           '***** DATA FOR SECOND MULTI-FIELD INPUT SCREEN *****
  493.  
  494. DATA 10007,9,25,40,112,99,""
  495. DATA 10007,10,25,30,112,99,""
  496. DATA 10007,11,25,30,112,99,""
  497. DATA 10010,11,56,5,112,99,""
  498. DATA 10008,13,27,10,112,99,""
  499. DATA 10001,16,36,8,112,99,""
  500. DATA 10002,16,53,8,112,99,""
  501. DATA 10003,16,70,8,112,99,""
  502. IF DEMOATTR% = 0 THEN
  503.   FOR XX% = 5 TO 65 STEP 6
  504.      INPT%(XX%) = 71
  505.   NEXT
  506. END IF
  507. DATA 9999
  508.  
  509. SETINPT 2, 80, "120", INPT%(), INPT$(), 15  ' SET UP MULTI-INPUT SCREEN #2 AND
  510.  
  511. ERASE INPT%, INPT$
  512.  
  513.   IF DEMOATTR% = 112 THEN INFOATTR% = 15 ELSE INFOATTR% = 31
  514.   INFOLINE 24, 2, 78, INFOATTR%
  515.  
  516. '-------------- MAIN MENU WINDOW ---- USES PULLDOWN ROUTINE -----------------
  517.  
  518. MAIN.MENU:
  519.  
  520.    A% = COL%(111)
  521.    MAKEWIND 2, "@WINDOWS R-E-Z", 4, 50, 25, 7, A%, 111
  522.    PRINTW "Version 5.10", 1, 100
  523.    PRINTW "CONNECT Software", 2, 100
  524.    PRINTW "Apr. 1, 1992", 3, 100
  525.    
  526.    MAKEWIND 1, "@***** Instructions *****", 13, 100, 75, 10, A%, 111
  527.    PRINTW "To demonstrate most of the features  included with WINDOW R-E-Z use the", 1, 2
  528.    PRINTW "PULLDOWN WINDOWS.   Use the arrow keys, mouse, or press the appropriate", 2, 2
  529.    PRINTW "letter to make a selection.   The left mouse botton is set to ENTER and", 3, 2
  530.    PRINTW "the right  button is set to ESC.  WINDOWS  R-E-Z can re-define the but-", 4, 2
  531.    PRINTW "tons.   Instuctions for many of the routines are  printed on the info-", 5, 2
  532.    PRINTW "line at the bottom of the display...", 6, 2
  533.  
  534.    HATTR% = 124
  535.    A% = COL%(113): IF A% = 15 THEN A% = 112: HATTR% = 127
  536. PULL:
  537.    INFOFIXED " Demonstration: "
  538.    PULLDOWN PULLINFO$(), BAR%, WIND%, "012", RKEY%, A%, HATTR%, 11' PULLDOWN WINDOWS
  539.    INFOFIXED ""
  540.    IF RKEY% = 1 THEN BAR% = 1: WIND% = 1
  541.    IF RKEY% = 2 THEN BAR% = 1: WIND% = 2
  542.  
  543.    IF (BAR% = 1 AND WIND% = 3) OR (BAR% = 1 AND WIND% = 5) THEN
  544.       'NOTHING
  545.    ELSE                                '  NOT SCROLL WINDOW DEMO OR EXIT
  546.       RSTRPULL 1                       ' RESTORE AREA UNDER PULLDOWN WINDOW.
  547.       RSTRWIND 2, 1                    ' RESTORE "CONNECT SOFTWARE" WINDOW.
  548.       RSTRWIND 1, 1                    ' RESTORE PULLDOWN INSTRUCTION WINDOW.
  549.    END IF
  550.  
  551. SELECT CASE BAR%
  552.  
  553. '------------------ "WINDOWS" OPTION FROM MENUBAR --------------------------
  554.  
  555.    CASE 1
  556.       SELECT CASE WIND%
  557.          CASE 1                           ' WINDOW MANAGEMENT SYSTEM
  558.             CALL WINDOWDEMO
  559.          CASE 2                           ' GET ANSWER DEMO
  560.             CALL GETANSDEMO
  561.          CASE 3                           ' SCROLL WINDOW DEMO
  562.             CALL SCROLLDEMO(WASESC%)
  563.             IF WASESC% = 1 THEN GOTO PULL ' ESC EXITED SCROLL DEMO
  564.                                           ' RE-ENTER PULLDOWN WITH PULLDOWN
  565.                                           ' WINDOW 1 ACTIVE.
  566.  
  567.          CASE 5:                          ' EXIT WAS SELECTED
  568.             PRINTINFO ("Press Y to quit or N to continue.  Press ENTER to accept...")
  569.             ANS$ = "N"
  570.             CALL GETANS("Quit!!  Are you sure? (Y/N) ", "YN", ANS$, 14, 100, 1240, 11)
  571.             IF ANS$ = "Y" THEN CLS : END ELSE RSTRPULL 0: GOTO PULL
  572.          CASE ELSE
  573.       END SELECT
  574.  
  575. '--------------------- "INPUT" OPTION FROM MENUBAR--------------------------
  576.  
  577.   CASE 2                                  ' INPUT ROUTINES
  578.      SELECT CASE WIND%
  579.         CASE 1                            ' DATE FORMAT
  580.            CALL SETDATEDEMO
  581.         CASE 2                            ' MULTI-FIELD INPUT
  582.            CALL MULTINPUTDEMO1
  583.         CASE 3                            ' "CHANGE" MULTI-FIELD INPUT
  584.            CALL MULTINPUTDEMO2
  585.         CASE 4                            'INPUT WINDOW DEMO
  586.            CALL INPUTWINDOWDEMO
  587.         CASE ELSE
  588.     END SELECT
  589.  
  590. '----------------------- "PRINT" OPTION FROM MENUBAR -----------------------
  591.   CASE 3              'PRINT IN A WINDOW
  592.      SELECT CASE WIND%
  593.         CASE 1
  594.            CALL PRINTDEMO                 ' PRINT IN MULTIPE WINDOWS
  595.         CASE 3, 4
  596.            CALL PRINTSPEED(WIND%)         ' FAST OR SLOW PRINT
  597.         CASE ELSE
  598.      END SELECT
  599.  
  600. '----------------------- "DIRECTORY" OPTION FROM MENUBAR  ------------------
  601.   CASE 4
  602.  
  603.      RSTRINFO 0              ' RESTORE AREA UNDER THE INFOLINE - KEEP ACTIVE.
  604.      A% = COL%(23)           ' COLOR WILL BE BLUE OR B/W.
  605.  
  606.      ' MAKE AND PRINT IN WINDOW 10.
  607.  
  608.      MAKEWIND 10, "@**** Directory Demonstration ****", 3, 100, 70, 10, A%, 111
  609.      PRINTW "Directory routines permit files from any path to be placed in an", 1, 100
  610.      PRINTW "array.  All, or selected files, can be found. Wildcards (*?) are", 2, 100
  611.      PRINTW "permitted.   Searches  can include files with any combination of", 3, 100
  612.      PRINTW "attributes. To suppliment functions included in QuickBASIC rout-", 4, 100
  613.      PRINTW "ines to find disk size, free disk  space, the  current drive and", 5, 100
  614.      PRINTW "path are included.", 6, 3
  615.  
  616.      GETANS "Press any key.....", "", "", 15, 100, A% + 128, 11    'ANY KEY
  617.  
  618.      RSTRWIND 10, 1                                    ' DELETE WINDOW # 10
  619.  
  620. DISKINST:
  621.  
  622.      PATH2$ = PATH$                   ' PATH$ IS SHARED VARIABLE AND HOLDS
  623.                                       ' THE CURRENT PATH.
  624.  
  625.     'GET THE PATH FOR THE DIRECTORY SEARCH VIA CALL TO INPTWIND.
  626.  
  627.     PRINTINFO " Input the path for the directory search."
  628.     INPTWIND "@PATH: FORMAT = DRIVE:\DIRECTORY\....( WILDCARDS PERMITTED )", "U", 100, 100, 63, A%, "1234567890QWERTYUIOPLKJHGFDSAZXCVBNM\:?*_.", PATH2$, RK%, 111
  629.  
  630.     RSTRINPT 1                     ' RESTORE AREA UNDER INPUT WINDOW & DELETE
  631.     IF RK% = 27 THEN GOTO DONEDIR  ' ESC WAS PRESSED
  632.     IF PATH2$ <> "" THEN           ' PATH$ IS NOT NULL.
  633.       PATH$ = PATH2$
  634.     ELSE                           ' PATH$ = ""
  635.       DOSOUND
  636.       GOTO OVER
  637.     END IF
  638.  
  639.     ' GET THE FILE ATTRIBUTES FOR THE DIRECTORY SEARCH. PUT IN TYPE$
  640.  
  641.     MAKEWIND 10, "@File attributes....", 3, 100, 45, 11, A%, 111
  642.     PRINTW "A - archived", 1, 6
  643.     PRINTW "H - hidden", 2, 6
  644.     PRINTW "R - read only", 3, 6
  645.     PRINTW "S - system", 4, 6
  646.     PRINTW "D - sub-directory", 5, 6
  647.     PRINTW "O - other - no attribute", 6, 6
  648.     PRINTW "V - volumn - must be root directory!", 7, 6
  649.  
  650.     PRINTINFO " Input the attributes for the files to include in the directory search."
  651.     TYPE$ = ""
  652.     INPTWIND " FILE ATTRIBUTES (A/H/R/S/O/D/V):", "U", 16, 100, 7, A%, "AHRSODV", TYPE$, RK%, 111
  653.  
  654.     RSTRINPT 1                     ' RESTORE AREA UNDER INPUT WINDOW & DELETE.
  655.     RSTRWIND 10, 1                 ' RESTORE WINDOW # 10.
  656.     IF RK% = 27 THEN GOTO DONEDIR  ' ESC EXITED INPTWIND.
  657.  
  658.     IF TYPE$ = "" GOTO OVER        ' NULL ENTRY
  659.  
  660.     IF MID$(PATH$, 2, 1) = ":" THEN ' DRIVE WAS SPECIFIED
  661.       DR% = ASC(UCASE$(PATH$)) - 64
  662.     ELSE                            ' DRIVE NOT SPECIFIED - USE CURRENT DRIVE.
  663.       CALL GETDISK(DR%): PATH$ = CHR$(DR% + 64) + ":" + PATH$
  664.     END IF
  665.  
  666.     ON ERROR GOTO DISKERROR         ' ALWAYS TRAP FOR ERRORS WHEN
  667.                                     ' ACESSING THE DISK.
  668.     FINDDIR PATH$, "D", F%          ' IS PATH$ A DIRECTORY?
  669.  
  670.     IF F% = 1 THEN PATH$ = PATH$ + "\*.*"    'IF DIRECTORY FIND ALL FILES
  671.  
  672.    ' FINDIR PUTS DIRECTORY IN DIREC$(). ADD "L" TO TYPE$ FOR LONG DIR SEARCH.
  673.    ' F% WILL HOLD THE NUMBER OF FILES FOUND.
  674.  
  675.    FINDDIR PATH$, TYPE$ + "L", F%
  676.  
  677.    ' DISKSIZE GETS DISK SIZE IN BYTES AND FREE BYTES.
  678.  
  679.    DISKSIZE DR%, SIZE&, FREE&
  680.  
  681.    ON ERROR GOTO 0
  682.  
  683.    ' RESTORE WINDOW 10.  MAKE A NEW WINDOW 10 AND PRINT THE DISK SIZE, FREE
  684.    ' BYTES AND FILES ATTRIBUTES INCLUDED IN THE DIRECTORY SEARCH.
  685.  
  686.    RSTRWIND 10, 1
  687.    MAKEWIND 10, "@PATH: " + PATH$, 3, 100, 74, 17, A%, 111
  688.    PRINTW "DISK SIZE =" + STR$(SIZE&) + " BYTES", 10, 100
  689.    PRINTW "BYTES FREE =" + STR$(FREE&) + " BYTES", 11, 100
  690.    PRINTW "FILE ATTRIBUTES: " + TYPE$, 12, 100
  691.  
  692.    IF F% = 0 THEN                                  'NO DIRECTORY ENTRIES
  693.       RSTRINFO 0
  694.       A% = A% + 128
  695.       ANS$ = ""
  696.       GETANS "NO ENTRIES.  CONTINUE... (Y/N)?", "YN", ANS$, 21, 100, A%, 11
  697.       A% = A% - 128
  698.       RSTRWIND 10, 1
  699.       IF ANS$ <> "Y" THEN GOTO OVER
  700.       GOTO DISKINST
  701.    ELSE                                           'DIRECTORY ENTRIES EXISTED
  702.       RTRN$ = "A"
  703.       MAKEWIND 11, "", 6, 100, 16, 7, 112, 11
  704.       HIATTR% = 0: RTRN% = 0
  705.  
  706.       ' MAKE ACTIVE WINDOW (11) A SCROLL WINDOW, PLACING THE LIST OF
  707.       ' FOUND FILES IN SAME. INFOFIXED PLACES THE INSTUCTIONS IN THE
  708.       ' INFOLINE.
  709.  
  710.       INFOFIXED " Select a file with scroll bar and press ENTER."
  711.       SCRLWIND DIREC$(), DUMMY$(), "", F%, RTRN$, RTRN%, 1, 1, RKEY%, HIATTR%
  712.       INFOFIXED ""
  713.  
  714.    END IF
  715.  
  716.    RTRN$ = DIREC$(RTRN%)
  717.  
  718.    IF RKEY% = 27 THEN RSTRWIND 11, 1: RSTRWIND 10, 1: GOTO OVER   'ESC EXITS
  719.  
  720.    ' SET WINDOW 13'S TITLE BASE ON  SELECTED FILES ATTRIBUTES
  721.    ' PRINT FILES SPECS IN THE WINDOW. CALL GETANS TO SEE IF ANOTHER
  722.    ' DIRECTORY SEARCH IS REQUESTED.
  723.  
  724.    FATTR% = DIRINFO(RTRN%).ATTR
  725.    T$ = "File: ": IF FATTR% = 8 THEN T$ = "Volumn: " ELSE IF FATTR% = 16 THEN T$ = "Directory: "
  726.  
  727.    MAKEWIND 13, "              " + T$ + RTRN$, 14, 100, 44, 7, 112, 112
  728.    PRINTW "SIZE:" + STR$(DIRINFO(RTRN%).SIZE) + " bytes", 1, 15
  729.    PRINTW "DATE: " + DIRINFO(RTRN%).DATE, 2, 15
  730.    PRINTW "TIME: " + DIRINFO(RTRN%).TIME, 3, 15
  731.    ANS$ = ""
  732.    GETANS "[ Repeat directory search (Y/N)? ]", "YN", ANS$, 20, 100, 143, 0
  733.  
  734. DONEDIR:
  735.    RSTRWIND 13, 1                               ' RESTORE ALL WINDOWS
  736.    RSTRWIND 11, 1
  737.    RSTRWIND 10, 1
  738.  
  739.    IF ANS$ <> "Y" OR RK% = 27 THEN GOTO OVER    ' "Y" = REPEAT SEARCH.
  740.    GOTO DISKINST
  741.  
  742. OVER:
  743.    ERASE DIREC$                                 ' GET MEMORY BACK.
  744.    ON ERROR GOTO 0
  745.  
  746. '------------------------- "COLOR" OPTION FROM MENUBAR ---------------------
  747.   CASE 5
  748.       CALL COLORDEMO(WIND%)               ' CHANGE COLOR DEMO
  749.       GOTO PREINTRO                       ' GOING HERE REPAINTS THE SCREEN.
  750.  
  751. '------------------------ SOUND = CLICK OR BEEP OR  OFF --------------------
  752.   CASE 6
  753.     CALL SOUNDDEMO(WIND%)
  754. '-------------------------------- ORDER FORM -------------------------------
  755.   CASE 7
  756.     RSTRINFO 0
  757.     A% = COL%(23): IF A% = 15 THEN A% = 112
  758.    
  759.     TOFLD% = 1: FROMFLD% = 0
  760.  
  761.     MAKEWIND 1, "@[ F1 = ABORT ]   *** WINDOWS R-E-Z  Order Form ***   [ F10 = Print ]", 100, 100, 80, 25, A%, 101
  762.     PRINTW "Name.......                                 Date.....", 2, 2
  763.     PRINTW "Address....                                 Registered User (Y/N).", 4, 2
  764.     PRINTW "Address....                                 Registration Number..", 6, 2
  765.     PRINTW "City/State.", 8, 2
  766.     PRINTW "Zip Code...       ( Enter 0 if not USA )", 10, 2
  767.     PRINTW "Programming Language..                      Disk Size............", 12, 2
  768.  
  769.  
  770.     PRINTW "Hard Copy Documentation (Y/N).    ( Same as on disk. Lazer printed. Three  ) ", 14, 2
  771.     PRINTW "( ring binder - $15.00 - USA orders only.)", 15, 36
  772.  
  773.     PRINTW "TERMS: Check/ money order/ Visa/ MC.  Fees detailed on hard copy order form.", 17, 2
  774.     PRINTW "Visa / Master card #                        Expiration date:", 19, 2
  775.  
  776.     NEWCOLOR 15
  777.     PREYN$ = ORDER$(7)
  778.  
  779.     J$ = SPACE$(76)
  780.  
  781. PREORDER:
  782.  
  783.     SELECT CASE TOFLD%
  784.       CASE 1
  785.          I$ = "Input your name."
  786.       CASE 2, 3, 4
  787.          I$ = "Input your address."
  788.       CASE 5
  789.          I$ = "Input your zip code."
  790.       CASE 6
  791.          I$ = "Enter today's date. (" + DATETYPE$(DFORMAT%) + ")  Must be valid to exit field!"
  792.       CASE 7
  793.          I$ = "Input Y if you are a registered user or N if not."
  794.       CASE 8
  795.          I$ = "If you are a registered user input your registation number."
  796.       CASE 9
  797.          I$ = "CHOICES:  QuickBASIC 4.5/Quickbasic 4.00/.00b/BASIC 7.0 - PDS/BASIC 7.1 - PDS"
  798.          GOSUB SPINST
  799.       CASE 10
  800.          I$ = "CHOICES:  5.25 inch - 360k / 3.5 inch - 720k"
  801.          GOSUB SPINST
  802.       CASE 11
  803.          I$ = "Enter Y for hard copy documentation or N for none."
  804.       CASE 12
  805.          I$ = "Enter Visa/Master Card number if using same."
  806.       CASE 13
  807.          I$ = "Enter Visa/Master card expiration date. ( mm/yy )"
  808.       CASE ELSE
  809.     END SELECT
  810.       IF TOFLD% < 9 OR TOFLD% > 11 THEN I$ = "INSTRUCTIONS: " + I$
  811.  
  812.     LSET J$ = I$
  813.     PRINTW J$, 21, 100
  814.  
  815.     MULTINPT 4, TOFLD%, EXIT$, FROMFLD%, RKEY%, ORDER$()
  816.  
  817.     IF RKEY% = 32 THEN                              ' Space bar - fields 9,10,11
  818.       SELECT CASE FROMFLD%
  819.         CASE 9                                     ' Space bar - field 10
  820.             LAN% = LAN% + 1: IF LAN% = 5 THEN LAN% = 1
  821.             ORDER$(9) = LAN$(LAN%)                 ' change language
  822.         CASE 10                                     ' Space bar - field 11
  823.             DSIZE% = DSIZE% + 1: IF DSIZE% = 3 THEN DSIZE% = 1
  824.             ORDER$(10) = DISK$(DSIZE%)              ' change disk type
  825.         CASE ELSE
  826.       END SELECT
  827.       GOTO PREORDER
  828.     END IF
  829.  
  830.   ' Delete the space bar instruction window if the field is not a
  831.   ' "multi-choice field or MULTINPT is exited via a function key.
  832.   ' ( EXIT$ <> "AUTO" )
  833.  
  834.    IF FROMFLD% >= 9 AND FROMFLD% <= 10 THEN
  835.       IF TOFLD% < 9 OR TOFLD% > 10 OR RKEY% < 11 THEN
  836.         RSTRWIND 3, 1
  837.       END IF
  838.    END IF
  839.  
  840.    IF RKEY% > 10 THEN            ' Was not a F1 or F10 as EXIT$ = "AUTO".
  841.       GOTO PREORDER              ' FROMFLD% can't = 0 so single field
  842.    END IF                        ' only will update ( for speed ).
  843.                                  ' Program can get here if cursor movement
  844.                                  ' key is pressed on fixed-choice field or
  845.                                  ' any other field
  846.  
  847.    IF RKEY% = 10 THEN            ' F10 key was pressed to exit MULTINPT
  848.       FERR% = 0
  849.       FOR XX% = 1 TO 14          ' check for blank fields
  850.          SELECT CASE XX%
  851.             CASE 1, 4, 5, 6, 7, 11      ' fields require entry
  852.                IF ORDER$(XX%) = "" THEN
  853.                   FERR% = 1
  854.                   EXIT FOR
  855.                END IF
  856.             CASE 8              ' field 8  requireS entry if field 7 = "Y"
  857.                IF ORDER$(7) = "Y" AND ORDER$(XX%) = "" THEN
  858.                   FERR% = 1
  859.                   EXIT FOR
  860.                ELSE
  861.                   IF ORDER$(7) = "N" AND ORDER$(XX%) <> "" THEN
  862.                      FERR% = 2
  863.                      EXIT FOR
  864.                   END IF
  865.                END IF
  866.             CASE 13             ' field 14 requires entry if field 13 has entry
  867.                IF ORDER$(12) <> "" AND ORDER$(13) = "" THEN
  868.                   FERR% = 1
  869.                   EXIT FOR
  870.                END IF
  871.             CASE ELSE
  872.          END SELECT
  873.       NEXT
  874.  
  875.       IF FERR% = 1 THEN           ' a blank field was found
  876.          GETANS "BLANK FIELD: Entry required.  Press any key...", "", "", 100, 100, 112, 11
  877.          TOFLD% = XX%: FROMFLD% = 1: GOTO PREORDER
  878.       ELSEIF FERR% = 2 THEN
  879.          GETANS "Field must be blank if Registered user field = N.  Press any key...", "", "", 100, 100, 112, 11
  880.          TOFLD% = XX%: FROMFLD% = 1: GOTO PREORDER
  881.       END IF
  882.       OANS$ = ""
  883.       GETANS "Prepare your printer.  Press any key when ready...", "", OANS$, 18, 100, 143, 2
  884.       IF OANS$ = CHR$(27) THEN GOTO PREORDER
  885.  
  886.       ON ERROR GOTO PRINTERROR
  887.       LPRINT
  888.       LI$ = STRING$(76, "-")
  889.       LPRINT
  890.       LPRINT TAB(4); LI$
  891.       LPRINT TAB(28); "WINDOWS R-E-Z ORDER FORM"
  892.       LPRINT TAB(34); "Version 5.10"
  893.       LPRINT TAB(4); LI$
  894.       LPRINT
  895.       FOR P% = 1 TO 4
  896.         LPRINT "    " + ORDER$(P%);
  897.         IF P% = 1 THEN LPRINT TAB(53); "Date: " + ORDER$(6);
  898.         IF P% = 2 THEN LPRINT TAB(53); "Registered User: " + ORDER$(7);
  899.         IF P% = 3 THEN LPRINT TAB(53); "Registration Number: " + ORDER$(8)
  900.         IF P% = 4 THEN
  901.            LPRINT "   " + ORDER$(5);
  902.         ELSE
  903.            LPRINT : LPRINT
  904.         END IF
  905.       NEXT
  906.       LPRINT
  907.       LPRINT TAB(4); LI$
  908.       LPRINT
  909.       LPRINT "    Programming Language: " + ORDER$(9)
  910.       LPRINT
  911.       LPRINT "    Disk Size: " + ORDER$(10)
  912.       LPRINT
  913.       LPRINT TAB(4); LI$
  914.       LPRINT
  915.       LPRINT "    Visa / Master card # " + ORDER$(12); TAB(55); "Expiration Date: " + ORDER$(13)
  916.       LPRINT
  917.       LPRINT "    Signature:"
  918.       LPRINT "              -----------------------------------"
  919.       LPRINT TAB(4); LI$
  920.       LPRINT
  921.       LPRINT TAB(35); "Registration / Update fee: -------- ";
  922.       IF ORDER$(7) = "N" THEN
  923.          FEE$ = "$30.00": FEE = 30
  924.       ELSE
  925.          FEE$ = "$20.00": FEE = 20
  926.       END IF
  927.       LPRINT FEE$
  928.       LPRINT
  929.       LPRINT TAB(35); "Hard copy documentation charge ---- ";
  930.       IF ORDER$(11) = "Y" THEN
  931.          FEE$ = "$15.00": FEE = FEE + 15
  932.       ELSE
  933.          FEE$ = ""
  934.       END IF
  935.       LPRINT FEE$
  936.       LPRINT
  937.       LPRINT TAB(35); "Shipping and Handling--------------  $2.50"
  938.       LPRINT
  939.       FEE$ = STR$(FEE + 2.5): MID$(FEE$, 1) = "$"
  940.  
  941.       LPRINT TAB(35); "             TOTAL CHARGE --------- ";
  942.       LPRINT USING "$##.##"; FEE + 2.5
  943.       LPRINT
  944.       LPRINT TAB(4); LI$
  945.       LPRINT
  946.       LPRINT "    Make checks and money orders payable to: CONNECT Software"
  947.       LPRINT
  948.       LPRINT "    Send completed order form to:   CONNECT Software"
  949.       LPRINT TAB(37); "6192 Fawn Meadow"
  950.       LPRINT TAB(37); "Farmington, NY   14425"
  951.       LPRINT
  952.       LPRINT
  953.       LPRINT "    Orders paid with a credit card or money order will be shipped within "
  954.       LPRINT "    two weeks of receipt.  Orders paid with checks will be shipped within"
  955.       LPRINT "    three weeks of receipt."
  956.       LPRINT
  957.       LPRINT "    Phone Orders - 6:OOpm - 9:00pm EST  Weekdays and weekends."
  958.       LPRINT "                 - (716) 924-3439"
  959.       LPRINT
  960.       LPRINT "    Call person to person for RICH - CONNECT SOFTWARE"
  961.  
  962.       LPRINT TAB(4); LI$
  963.       LPRINT CHR$(12)
  964. DONEORDER:
  965.      ON ERROR GOTO 0
  966.  
  967.    END IF
  968.  
  969.    RSTRWIND 1, 1                  ' It was a function key
  970.  
  971.    CASE ELSE
  972.    
  973.  END SELECT
  974.  
  975.  GOTO MAIN.MENU
  976.  
  977.  
  978.  
  979. PRINTERROR:
  980.    OANS$ = ""
  981.    GETANS "PRINTER ERROR:  (R)etry or (A)bort.", "RA", OANS$, 100, 100, 143, 2
  982.    IF OANS$ = "R" THEN RESUME ELSE RESUME DONEORDER
  983.  
  984. SPINST:
  985.   IF WAVAIL%(3) THEN
  986.     MAKEWIND 3, "", 18, 100, 75, 3, 240, 1
  987.     NEWCOLOR 15
  988.     PRINTW "Press SPACE BAR for selection. Press cursor movement key to exit field.", 1, 100
  989.     CHNGWIND 1
  990.   END IF
  991. RETURN
  992.  
  993. DISKERROR:
  994.   IF PREFLAG% = 1 THEN PATH$ = CURRDISK$
  995.   SELECT CASE ERR
  996.      CASE 75, 76
  997.         E$ = "PATH NOT FOUND"
  998.      CASE 71
  999.         E$ = "DRIVE NOT READY"
  1000.      CASE 72
  1001.         E$ = "DISK MEDIA ERROR"
  1002.      CASE 57
  1003.         E$ = "I/O ERROR"
  1004.      CASE 68
  1005.         E$ = "DRIVE NOT AVAILABLE"
  1006.      CASE ELSE
  1007.         E$ = "UNIDENTIFIED ERROR"
  1008.    END SELECT
  1009.    A% = A% + 128
  1010.    GETANS "DRIVE " + LEFT$(PATH$, 2) + ".  " + E$ + ". Press any key...", "", "", 19, 100, A%, 11
  1011.    A% = A% - 128
  1012.    IF PREFLAG% = 1 THEN RESUME REALSTART
  1013.    RSTRWIND 10, 1
  1014.  
  1015. RESUME DISKINST
  1016.  
  1017. FUNCTION COL% (A%)
  1018.  
  1019.   ' DEMOATTR% IS SHARED
  1020.   ' DEMOATTR% = 112 IF BLACK AND WHITE OR NO HIGH INTENSITY
  1021.  
  1022.   IF DEMOATTR% = 112 THEN COL% = 15 ELSE COL% = A%
  1023.  
  1024. END FUNCTION
  1025.  
  1026. SUB COLORDEMO (WIND%)
  1027.  
  1028.    ' DEMOATTR%, NOHI% AND SHADCOL% ARE SHARED VARIABLES.
  1029.  
  1030.    RSTRINFO 1                             ' RESTORE AREA UNDER AND
  1031.                                           ' DEACTIVATE THE INFO-LINE.
  1032.    DEMOATTR% = 112                        ' DEFAULT B/W.
  1033.    NOHI% = 0                              ' DEFAULT IS HI-INTENSITY.
  1034.    SHADCOL% = 7                           ' DEFAULT SHADOW COLOR SET TO 7.
  1035.  
  1036.    IF WIND% = 2 THEN                      ' COLOR WAS SELECTED.
  1037.      DEMOATTR% = 0                        ' FLAG FOR COLOR.
  1038.      SHADCOL% = 8                         ' SHADOW SET FOR COLOR.
  1039.    ELSEIF WIND% = 3 THEN                  ' NO HI INTENSITY WAS SELECTED.
  1040.      NOHI% = 1                            ' SET NO HI-INTENSITY FLAG.
  1041.    END IF
  1042.  
  1043.    CALL SETPARAMETERS                     ' USES SHARED VARIABLES NOHI%,
  1044.                                           ' SHADCOL% AND DEMOATTR%,
  1045. END SUB
  1046.  
  1047. SUB INPUTWINDOWDEMO
  1048.  
  1049.    RSTRINFO 0               ' RESTORE AREA UNDER INFOLINE & KEEP IT ACTIVE.
  1050.    A% = COL%(32)            ' GREEN/GRAY OR B/W
  1051.    IF A% = 32 THEN AADD% = 1000 ELSE AADD% = 0   ' AADD% ALLOWS HI-INTENSITY
  1052.  
  1053.    ' USE WINDOW 15 TO DESCRIBE INPUT WINDOWS.  GETANS WAITS FOR ANY KEY.
  1054.  
  1055.    MAKEWIND 15, "@*** Input Window Demonstration ***", 3, 4, 70, 6, A%, 112
  1056.    PRINTW "An input window can be used to prompt for, and receive, input. The", 1, 2
  1057.    PRINTW "area under the window is automatically saved and restored on exit.", 2, 2
  1058.    GETANS "Press any key.......", "", "", 13, 100, A% + 128, 11
  1059.  
  1060.    RSTRWIND 15, 1                    ' RESTORE AREA UNDER WINDOW 15.
  1061.  
  1062.    ' MAKE A "NEW" WINDOW 15 AND USE FOR INSTRUCTIONS.
  1063.  
  1064.    MAKEWIND 15, "@[ Input Window Instructions ]", 3, 100, 72, 9, A%, 12
  1065.    PRINTW "SPACE BAR/ CTRL E  Erases field if first key pressed./ Erases field.", 1, 2
  1066.    PRINTW "ENTER              Exits the procedure. ( Returns the string )", 2, 2
  1067.    PRINTW "BACKSPACE/ DELETE  Erase character to left of or under cursor.", 3, 2
  1068.    PRINTW "LEFT/ RIGHT ARROW  Moves cursor from start to end of input text.", 4, 2
  1069.    PRINTW "INSERT             Toggle between insert and overstrike mode.", 5, 2
  1070.    PRINTW "ESC                Returns field to pre-edited state, and exits.", 6, 2
  1071.    PRINTW "HOME/ END          Move cursor to start or end of text.", 7, 2
  1072.  
  1073.  
  1074. START.EDIT:
  1075.  
  1076.     ' USE GETANS TO SET P$ TO REPRESENT THE CASE FOR ALPHA/NUMERIC INPUT.
  1077.  
  1078.     PRINTINFO " Press <U> for upper case - <L> for lower case - <B> for both."
  1079.     P$ = ""
  1080.     GETANS "", "ULB", P$, 21, 100, 0, 0
  1081.  
  1082.     IF P$ = CHR$(27) THEN GOTO DONEIWIND          ' ESC EXITS
  1083.     IF P$ = "B" THEN P$ = "A"                     ' B = BOTH CASES. CHANGE TO
  1084.                                                   ' A FOR REGULAR ALPHA/NUM.
  1085.     'GET ALPHA/NUMERIC INPUT FROM ROUTINE INPTWIND.
  1086.  
  1087.     PRINTINFO " Prompts can be printed in the window's title box. Press ENTER to finalize."
  1088.     INPTWIND "@** Input Your Name **", P$, 14, 100, 30, A% + AADD%, "", RTR$, RK%, 112
  1089.     
  1090.     RSTRINPT 1                           ' RESTORE THE INPUT WINDOW
  1091.  
  1092.     IF RK% = 27 THEN GOTO DONEIWIND      ' ESC EXITS
  1093.  
  1094.     ' DATE INPUT.  DATETYPE$(DFORMAT%) IS SHARED VARIABLE WHICH SPECIFIES
  1095.     ' DATE FORMAT.
  1096.  
  1097.     PRINTINFO " " + I$ + "Prompts can be printed the left of the field in the window."
  1098.     INPTWIND "DATE MUST = " + DATETYPE$(DFORMAT%) + " ( 1901 to 2099 ) to exit. ", "D", 15, 100, 10, A% + AADD%, "", RTR2$, RK%, 11
  1099.     
  1100.     RSTRINPT 1                                  ' RESTORE INPUT WINDOW
  1101.     IF RK% = 27 THEN GOTO DONEIWIND             ' ESC EXITS
  1102.  
  1103.     ' GET NUMBER OF DECIMAL PLACES IN DEC$ FOR NEXT CALL TO INPTWIND.
  1104.  
  1105.     PRINTINFO " Enter number of decimal places to return for next input Window ( 0-6 )"
  1106.     DEC$ = ""
  1107.     GETANS "", "0123456", DEC$, 21, 100, A%, 0
  1108.     IF DEC$ = CHR$(27) THEN GOTO DONEIWIND        ' ESC EXITS
  1109.  
  1110.     ' NUMERIC INPUT WITH NO WINDOW.
  1111.  
  1112.     PRINTINFO " LOOK - no window!  The number with " + DEC$ + " decimals must fit to exit the field."
  1113.     IF A% = 15 THEN ADD% = 97 ELSE ADD% = 0     ' COLOR
  1114.     INPTWIND "INPUT A NUMBER: ", DEC$, 15, 100, 15, A% + AADD% + ADD% + 1000, "", RTR1$, RK%, 0
  1115.     RSTRINPT 1                                    ' RESTORE INPUT WINDOW
  1116.     IF RK% = 27 THEN GOTO DONEIWIND               ' ESC EXITS
  1117.  
  1118.     ' DISPLAY ENTERED DATA IN WINDOW 2.
  1119.  
  1120.     MAKEWIND 2, "@**** The Data Entered Was:****", 14, 100, 41, 5, A%, 12
  1121.     PRINTW "NAME: " + RTR$, 1, 2
  1122.     PRINTW "DATE: " + RTR2$, 2, 2
  1123.     PRINTW "NUMBER: " + RTR1$, 3, 2
  1124.  
  1125.     ' RESTORE AREA UNDER INFOLINE AND USE CALL TO GETANS TO REPEAT OR EXIT.
  1126.  
  1127.     RSTRINFO 0
  1128.     ANS$ = ""
  1129.     GETANS "Press (E) to Edit Data or (R) to Return to Main Menu.", "RE", ANS$, 21, 100, A% + 128, 11
  1130.     RSTRWIND 2, 1
  1131.     IF ANS$ = "E" THEN GOTO START.EDIT
  1132.  
  1133. DONEIWIND:
  1134.      RSTRWIND 15, 1                      ' RESTORE WINDOW 15 (INSTRUCTIONS).
  1135.  
  1136. END SUB
  1137.  
  1138. SUB MULTINPUTDEMO1
  1139.  
  1140.    ' MAKES TWO MULTI-FIELD INPUT SCREENS. THE DATA FOR THE FIELDS IN THE
  1141.    ' SCREENS USES ARRAY MRTRN1$() FOR SCREEN 1 AND MRTRN2$() FOR SCREEN 2.
  1142.    ' THESE ARRAYS ARE SHARED AND WERE INITIALIZED VIA THE MODULE LEVEL
  1143.    ' CODE.  THE FIELD DATA FOR BOTH INPUT SCREENS WAS ALSO INITIALIZED
  1144.    ' AT MODULE LEVEL.
  1145.  
  1146.    STATIC THISDATE%        ' USED TO DETERMINE IF DATE FORMAT HAS CHANGED
  1147.                            ' SINCE THIS SUB WAS CALLED LAST.
  1148.  
  1149.    RSTRINFO 0                              ' RESTORE AREA UNDER INFOLINE
  1150.    A% = COL(71): IF A% = 15 THEN A% = 112  ' COLOR RED/GRAY OR B/W
  1151.  
  1152.    ' MAKEWINDOW 15 AND PRINT INFO IN SAME. USE GETANS TO WAIT FOR ANY KEY.
  1153.  
  1154.    MAKEWIND 15, "@***** Multi-field Input Demonstration *****", 4, 4, 74, 7, A%, 112
  1155.    PRINTW "       Up to ten multi-field input screens may be defined using up to", 1, 2
  1156.    PRINTW "150 input fields per screen.  Fields may be set to alpha/numeric num-", 2, 2
  1157.    PRINTW "eric, date, or protected. Complete editing features are incorporated.", 3, 2
  1158.    ANS$ = ""
  1159.    GETANS "Press any key.......", "", ANS$, 13, 100, A% + 128, 11
  1160.    RSTRWIND 15, 1                          ' RESTORE WINDOW 15.
  1161.    IF ANS$ = CHR$(27) THEN GOTO ALLDONE    ' ESC EXITS
  1162.  
  1163.    ' MAKE AND PRINT IN THE INPUT SCREEN.  DFORMAT% IS SHARED VARIABLE
  1164.    ' WHICH REPRESENTS DATE FORMAT.  THISDATE% IS STATIC & LOCAL TO THIS
  1165.    ' SUB.  MRTRN2$(5) IS THE DATE FIELD FOR THE SECOND INPUT SCREEN.
  1166.    ' IF THISDATE% <> DFORMAT% THIS IS THE FIRST CALL TO THIS SUB OR THE
  1167.    ' DATE FORMAT HAS CHANGED.  IN EITHER CASE SET THE DATE FIELD TO "".
  1168.  
  1169.    MAKEWIND 15, "@F1 - Next Input Screen    F2 - Main Menu    F10 - Help", 1, 1, 80, 25, A%, 102
  1170.    IF THISDATE% <> DFORMAT% THEN MRTRN2$(5) = ""
  1171.    THISDATE% = DFORMAT%
  1172.  
  1173.    SCRN% = 1           ' START ON INPUT SCREEN 1
  1174.    TOFLD1% = 1         ' START IN FIELD 1 ON INPUT SCREEN 1
  1175.    TOFLD2% = 1         ' START IN FIELD 1 ON INPUT SCREEN 2
  1176.  
  1177. MAKEINPT:
  1178.    FROMFLD% = 0                        ' UPDATE ALL FIELDS - SCREEN 1 AND 2
  1179.    IF SCRN% = 1 THEN                   ' THIS IS SCREEN 1.
  1180.       CALL INPTINIT(DFORMAT%, 1, "")   ' SET DATE FORMAT/DECIMAL POINT = "."
  1181.  
  1182.       CLRWIND                          ' CLEAR WINDOW'S INTERIOR
  1183.       PRINTW "**** FIXED CHOICE FIELDS ****", 1, 48
  1184.       PRINTW "****** Press SPACE BAR ******.", 2, 48
  1185.       PRINTW "Decimal(0)     Decimal(1)     Decimal(2)", 2, 4
  1186.       PRINTW "Color...", 3, 48
  1187.       PRINTW "( Padded with leading zeros.)     Location.", 5, 14
  1188.       PRINTW "Alpha/num. Upper case     Alpha/num. Lower case       Alpha/numeric", 7, 4
  1189.       PRINTW "*** Auto-advance fields -- Cursor moves to the next field automatically ***", 10, 100
  1190.       PRINTW "(-- Restricted Input --)", 12, 14
  1191.       PRINTW "M or F:         Y or N:      SOC SECURITY #..   -  -", 13, 100
  1192.       PRINTW "* Auto-exit ( On change only ) and Auto-advance fields. (A,B ) *", 15, 100
  1193.       PRINTW "* Single field update on protected field C allows fast exit and return *", 16, 100
  1194.       PRINTW "[ PRESS F1 FOR MORE AUTO-EXIT EXAMPLES.]", 20, 100
  1195.       PRINTW "A             +B             =C", 18, 20
  1196.       PRINTW "If formatted number won't fit, field and input screen cannot be exited.", 21, 4
  1197. MAKE1:
  1198.  
  1199.        ' GET INPUT FROM SCREEN 1
  1200.       
  1201.       MULTINPT 1, TOFLD1%, "EXIT$", FROMFLD%, RKEY%, MRTRN1$()
  1202.  
  1203.       ' FROMFLD% IS THE FIELD THE CURSOR IS LEAVING OR THE FIELD THE
  1204.       ' CURSOR IS ON WHEN MULTINPT IS "AUTOEXITED".
  1205.  
  1206.       SELECT CASE FROMFLD%                     ' "EXIT FROM" FIELD
  1207.          CASE 5, 6                             ' 5 OR 6.
  1208.             IF RKEY% = 32 THEN                 ' EXIT VIA THE SPACE BAR.
  1209.  
  1210.                ' SPACE BAR - FIELD 5.  COLCHOICE$() IS SHARED FROM MODULE
  1211.                ' LEVEL CODE. IF SPACE BAR IS PRESSED ON FIELD 5 THE TEXT
  1212.                ' IN THE FIELD IS CHANGED TO THE NEXT ELEMENT OF COLCHOICE%.
  1213.                ' AS FROMFLD% EQUALS THE FIELD THE CURSOR WAS IN WHEN THE
  1214.                ' SPACE BAR WAS PRESSED ONLY THAT FIELD WILL BE UPDATED
  1215.                ' WHEN MULTINPT IS RE-ENTERED.
  1216.  
  1217.                IF FROMFLD% = 5 THEN
  1218.                   COLCHOICE% = COLCHOICE% + 1
  1219.                   IF COLCHOICE% = 5 THEN COLCHOICE% = 1   ' ROLLOVER TO 1
  1220.                   MRTRN1$(5) = COLCHOICE$(COLCHOICE%)
  1221.  
  1222.                ' SAME AS FOR FIELD 5 USING SHARED ARRAY LOCHOICE$().
  1223.  
  1224.                ELSE                           ' SPACE BAR - FIELD 6
  1225.                   LOCHOICE% = LOCHOICE% + 1
  1226.                   IF LOCHOICE% = 5 THEN LOCHOICE% = 1
  1227.                   MRTRN1$(6) = LOCHOICE$(LOCHOICE%)
  1228.                END IF
  1229.             END IF
  1230.  
  1231.          CASE 15, 16
  1232.           ' EXIT FROM FIELD 15 OR 16. THESE FIELDS ARE "EXIT ON CHANGE"
  1233.           ' FIELDS.  IF THEY ARE CHANGED ADD THE VALUE OF BOTH FIELDS AND
  1234.           ' PUT IN FIELD 17.  SETTING FROMFLD% TO 17 SIGNALS MULTINPT
  1235.           ' TO UPDATE FIELD 17 ONLY, WHEN IT IS RE-ENTERED.
  1236.  
  1237.             MRTRN1$(17) = STR$(VAL(MRTRN1$(15)) + VAL(MRTRN1$(16)))
  1238.             IF MRTRN1$(15) + MRTRN1$(16) = "" THEN MRTRN1$(17) = ""
  1239.             FROMFLD% = 17                       ' ONLY UPDATE FIELD 17
  1240.  
  1241.          CASE ELSE
  1242.       END SELECT
  1243.  
  1244.       IF RKEY% = 10 THEN GOSUB HELP: GOTO MAKE1     ' WAS F10. GO SUB HELP.
  1245.  
  1246.       ' WAS NOT F1 OR F2. MUST HAVE BEEN AN "AUTOEXIT" FIELD.  IT COULD
  1247.       ' HAVE BEEN FIELD 5, 6, 15 OR 16.  GOING BACK TO MAKE1 CALLS MULTINPT
  1248.       ' FOR SCREEN 1 AGAIN.  FROMFLD% SPECIFIES WHICH FIELD TO UPDATE.
  1249.       ' TOFLD1% IS AUTOMATICALLY SET TO POINT TO THE CORRECT ACTIVE FIELD
  1250.       ' UPON ENTRY TO MULTINPT. ( TOFLD1% IS SET BY MULTINPT BEFORE IT IS
  1251.       ' EXITED. )
  1252.  
  1253.       IF RKEY% > 12 THEN GOTO MAKE1
  1254.    END IF
  1255.  
  1256.    ' MAKE AND PRINT THE SECOND INPUT SCREEN.  INPTINIT SETS THE DECIMAL
  1257.    ' DESIGNATOR TO A COMMA AS THE SECOND ARGUMENT = 0.
  1258.  
  1259.    IF SCRN% = 2 THEN
  1260.       INPTINIT DFORMAT%, 0, ""
  1261.       CLRWIND
  1262.       PRINTW "*** ---------- All fields are Auto-exit ( Always ) fields.---------- ***", 2, 100
  1263.       PRINTW "*** The instruction line is made possible by using Auto-exit fields. ***", 3, 100
  1264.       LINEW 4, 1
  1265.       LINEW 11, 1
  1266.       PRINTW "NAME..............", 6, 5
  1267.       PRINTW "ADDRESS...........", 7, 5
  1268.       PRINTW "CITY/STATE/ZIP....", 8, 5
  1269.       PRINTW "DATE...(" + DATETYPE$(DFORMAT%) + ")..", 10, 5
  1270.       PRINTW "Decimal 1        Decimal 2        Decimal 3", 12, 35
  1271.       PRINTW "Comma as decimal ( non-USA ):", 13, 5
  1272.       LINEW 14, 1
  1273.       PRINTW "* This example sets the active field to a different color than the  inactive *", 16, 1
  1274.       PRINTW "* fields allowing the fields to be placed on consecutive rows without blend- *", 17, 1
  1275.       PRINTW "* ing into  each other.   The user's attention is drawn to the active field. *", 18, 1
  1276.  
  1277.       LINEW 20, 1
  1278.       INSTRUCT$ = SPACE$(76)
  1279. MAKE2:                                 ' SET I$ TO THE INSTRUCTIONS FOR
  1280.       SELECT CASE TOFLD2%              ' THE NEXT FIELD TO BE ENTERED.
  1281.          CASE 1
  1282.             I$ = "INPUT YOUR NAME"
  1283.          CASE 2
  1284.             I$ = "INPUT YOUR STREET ADDRESS"
  1285.          CASE 3
  1286.             I$ = "INPUT YOUR CITY AND STATE"
  1287.          CASE 4
  1288.             I$ = "INPUT YOUR ZIP CODE"
  1289.          CASE 5
  1290.             I$ = "VALID DATE (" + DATETYPE$(DFORMAT%) + ") 1901 TO 2099 REQUIRED TO EXIT FIELD!"
  1291.          CASE 6, 7, 8
  1292.             I$ = "FIELD CAN NOT BE EXITED IF FORMATED NUMBER WILL NOT FIT!"
  1293.          CASE ELSE
  1294.       END SELECT
  1295.  
  1296.       LSET INSTRUCT$ = "INSTRUCTIONS: " + I$    ' MAKE INSTRUCT$
  1297.       NEWCOLOR 15                               ' BLACK/HI-INTENSITY WHITE
  1298.       PRINTW INSTRUCT$, 21, 2                   ' PRINT INSTRUCTIONS.
  1299.       NEWCOLOR A%                               ' RESTORE ORIGINAL COLOR.
  1300.  
  1301.       ' GET INPUT FROM MULT-FIELD INPUT SCREEN 2. AS FROMFLD% = 0 THE
  1302.       ' FIRST TIME MULTINPT IS ENTERED ALL FIELDS WILL UPDATE.
  1303.  
  1304.       MULTINPT 2, TOFLD2%, EXIT$, FROMFLD%, RKEY%, MRTRN2$()
  1305.  
  1306.       FROMFLD% = 1              ' ONLY UPDATE FIELD 1 FOR SPEED THE NEXT
  1307.                                 ' TIME MULTINPT IS ENTERED.
  1308.  
  1309.       IF RKEY% = 10 THEN GOSUB HELP: GOTO MAKE2    ' WAS F10. GO SUB HELP
  1310.       IF RKEY% > 12 THEN GOTO MAKE2                ' WAS NOT F1 OR F2.
  1311.    END IF
  1312.  
  1313.    IF RKEY% = 1 THEN                               ' WAS F1.
  1314.       IF SCRN% = 1 THEN                            ' TOGGLE TO SREEN 2 IF
  1315.          SCRN% = 2                                 ' SCREEN 1 IS ACTIVE.
  1316.       ELSE                                         ' ELSE TOGGLE TO SCREEN 1.
  1317.          LINEW 4, 0: LINEW 11, 0: LINEW 14, 0: LINEW 20, 0
  1318.          SCRN% = 1
  1319.       END IF
  1320.       GOTO MAKEINPT                                ' GO BACK.
  1321.    END IF
  1322.  
  1323.    GOTO ALLDONE                                    ' MUST BE F2  O EXIT.
  1324.  
  1325.   ' HELP = WINDOW 14. PRINT IN THE WINDOW AND USE GETANS TO WAIT FOR ANY KEY.
  1326.  
  1327. HELP:
  1328.    MAKEWIND 14, "@***** Multi-field Input Instructions *****", 100, 100, 76, 14, 15, 101
  1329.    PRINTW "Key(s):               Function:", 1, 2
  1330.    PRINTW "CTRL END/ CTRL HOME   Move to first or last field.", 1, 2
  1331.    PRINTW "TAB/ SHIFT TAB        Move from field to field horizontally.", 2, 2
  1332.    PRINTW "UP/ DOWN ARROW /ENTER Move from field to field. ( user defined order )", 3, 2
  1333.    PRINTW "BACKSPACE/ DELETE     Erase character to left of or under cursor.", 4, 2
  1334.    PRINTW "LEFT/ RIGHT ARROW     Moves cursor from start to end of text.", 5, 2
  1335.    PRINTW "INSERT                Toggle between insert and overstrike mode.", 6, 2
  1336.    PRINTW "ESC/ CTRL E           Returns field to pre-edited state. / Erases field.", 7, 2
  1337.    PRINTW "HOME/ END             Moves cursor to start or end of text.", 8, 2
  1338.    PRINTW "SPACE BAR             Erases field if it this is the first key pressed.", 9, 2
  1339.    GETANS "[ PRESS ANY KEY TO EXIT HELP ]", "", "", 19, 100, 240, 0
  1340.    RSTRWIND 14, 1
  1341.    CHNGWIND 15
  1342. RETURN
  1343.  
  1344. ALLDONE:
  1345.     CALL INPTINIT(DFORMAT%, 1, "")    ' SET DECIMAL DESIGNATOR TO A PERIOD.
  1346.     RSTRWIND 15, 1                    ' RESTORE AREA UNDER THE INPUT SCREEN.
  1347.  
  1348. END SUB
  1349.  
  1350. SUB MULTINPUTDEMO2
  1351.  
  1352.      RSTRINFO 0                               ' RESTORE AREA UNDER INFOOLINE
  1353.      A% = COL%(23): IF A% = 15 THEN A% = 112  ' A%= COLOR -- B/W
  1354.  
  1355.      ' PRINT THE INPUT SCREEN IN WINDOW 15
  1356.  
  1357.      MAKEWIND 15, "@Multi-field Input.  Extensive use of fixed choice fields.", 1, 1, 80, 25, A%, 102
  1358.      MAKEWIND 1, "@ Change ", 6, 100, 59, 15, 112, 11
  1359.      LINEW 12, 1
  1360.      PRINTW "Find What:", 2, 2
  1361.      PRINTW "Change To:", 5, 2
  1362.      PRINTW "[ ] Match Upper/Lowercase", 8, 2
  1363.      PRINTW "[ ] Whole Word", 9, 2
  1364.      PRINTW "<                 > <            > <        > <      >", 13, 2
  1365.      MAKEWIND 10, "@ Search ", 13, 43, 25, 5, 112, 1
  1366.      PRINTW "( ) Active Window", 1, 2
  1367.      PRINTW "( ) Current Module", 2, 2
  1368.      PRINTW "( ) All Modules", 3, 2
  1369.      MAKEWIND 11, "", 7, 25, 43, 3, 112, 1
  1370.      MAKEWIND 12, "", 10, 25, 43, 3, 112, 1
  1371.      CHNGWIND 15: NEWCOLOR 15
  1372.  
  1373.      TOFLD% = 1                   ' START IN FIELD ONE.
  1374.      FROMFLD% = 0                 ' UPDATE ALL FIELDS.
  1375. CHANGE:
  1376.  
  1377.      ' CURSOR TO FIELD 5 TO 7.  THIS IS THE "SEARCH" SCOPE
  1378.  
  1379.      IF TOFLD% > 4 AND TOFLD% < 8 THEN
  1380.         TOFLD% = 5
  1381.         WHILE CHNGRTRN$(TOFLD%) <> CHR$(4): TOFLD% = TOFLD% + 1: WEND
  1382.      END IF
  1383.  
  1384.      SELECT CASE TOFLD%                         ' PU INSTRUCTIONS IN A$
  1385.        CASE 1, 2                                ' ON ACTIVE (TOFLD%) FIELD.
  1386.          A$ = "Input data."
  1387.        CASE 3, 4
  1388.          A$ = "Press SPACE BAR to change."
  1389.        CASE 5, 6, 7
  1390.          A$ = "Press UP/DOWN arrow keys to change."
  1391.        CASE 8 TO 11
  1392.          A$ = "Press SPACE BAR/ENTER to select."
  1393.        CASE ELSE
  1394.      END SELECT
  1395.      A$ = A$ + " TAB = next field. ESC/ENTER exits."
  1396.  
  1397.      PRINTW "  " + A$ + SPACE$(76 - LEN(A$)), 21, 100    ' PRINT INSTRUCTIONS.
  1398.  
  1399.      ' GET MULTIFIELD INPUT.  TOFLD% = THE ACTIVE FIELD ON ENTRY.  FROMFLD%
  1400.      ' REPRESENTS THE FIELD WHICH IS ACTIVE ON EXIT
  1401.  
  1402.      MULTINPT 3, TOFLD%, "U", FROMFLD%, RK%, CHNGRTRN$()
  1403.  
  1404.      IF FROMFLD% > 4 AND FROMFLD% < 8 THEN     ' Cursor from search window.
  1405.        IF RK% = 16 OR RK% = 19 THEN            ' Was UP or DOWN arrow.
  1406.           IF TOFLD% = 4 THEN TOFLD% = 7        ' Keep cursor in the
  1407.           IF TOFLD% = 8 THEN TOFLD% = 5        ' search window.
  1408.            CHNGRTRN$(5) = "": CHNGRTRN$(6) = "": CHNGRTRN$(7) = ""
  1409.            CHNGRTRN$(TOFLD%) = CHR$(4)         ' Only one choice is permitted.
  1410.            FROMFLD% = 0                        ' Update all fields.
  1411.         END IF
  1412.         IF RK% = 14 THEN TOFLD% = 4            ' Was SHIFT TAB
  1413.         IF RK% = 15 THEN TOFLD% = 8            ' Was TAB
  1414.      END IF
  1415.  
  1416.      SELECT CASE RK%
  1417.  
  1418.         ' RETURN CAUSED EXIT.
  1419.         CASE 13
  1420.           PICK$ = "ENTER"
  1421.           IF FROMFLD% >= 7 THEN PICK$ = CHNGRTRN$(FROMFLD%)
  1422.           GOTO PRINTRESULTS
  1423.  
  1424.         ' ESC CAUSED EXIT.
  1425.         CASE 27
  1426.           PICK$ = "ESC"
  1427.           GOTO PRINTRESULTS
  1428.  
  1429.         ' SPACE BAR CAUSED EXIT.
  1430.         CASE 32
  1431.           IF FROMFLD% = 3 OR FROMFLD% = 4 THEN  ' EXITING FIELD 3 OR 4
  1432.              IF CHNGRTRN$(FROMFLD%) = "" THEN CHNGRTRN$(FROMFLD%) = "X" ELSE CHNGRTRN$(FROMFLD%) = ""
  1433.           ELSEIF FROMFLD% > 7 THEN              ' EXITING FIELD 8,9,10,11
  1434.              PICK$ = CHNGRTRN$(FROMFLD%)
  1435.             GOTO PRINTRESULTS
  1436.           ELSE                                  ' FIELD 5,6,7
  1437.           'NOTHING
  1438.           END IF
  1439.         CASE ELSE
  1440.      END SELECT
  1441.  
  1442.      GOTO CHANGE
  1443.  
  1444. PRINTRESULTS:
  1445.  
  1446.      ' PRINT THE RESULTS IN WINDOW 1.  GETANS WAITS FOR ANY KEY.
  1447.  
  1448.      PRINTINFO ""
  1449.      RSTRWIND 1, 1: RSTRWIND 2, 1: DELWIND 10: DELWIND 11: DELWIND 12
  1450.      MAKEWIND 1, "@ Results ", 100, 100, 58, 13, 112, 111
  1451.      PRINTW "Find What: = " + CHNGRTRN$(1), 2, 2
  1452.      PRINTW "Change To:  = " + CHNGRTRN$(2), 3, 2
  1453.      IF CHNGRTRN$(3) = "" THEN S$ = "No" ELSE S$ = "Yes"
  1454.      PRINTW "Match Upper/Lowercase = " + S$, 4, 2
  1455.      IF CHNGRTRN$(4) = "" THEN S$ = "No" ELSE S$ = "Yes"
  1456.      PRINTW "Whole Word = " + S$, 5, 2
  1457.      IF CHNGRTRN$(5) = CHR$(4) THEN
  1458.         S$ = "Active Window"
  1459.      ELSEIF CHNGRTRN$(6) = CHR$(4) THEN
  1460.         S$ = "Current Module"
  1461.      ELSE
  1462.         S$ = "All Modules"
  1463.      END IF
  1464.      PRINTW "Search Criteria = " + S$, 6, 2
  1465.      PRINTW "Exit was via ...." + PICK$, 8, 2
  1466.      GETANS "[ Press any key ]", "", "", 19, 100, 143, 0
  1467.  
  1468.      ' DELETE WINDOW 1.   NO NEED TO RESTORE SAME AS IT RESIDED ON TOP OF
  1469.      ' WINDOW 15.  RESTORING WINDOW 15 RESTORES THE SCREEN TO IT'S
  1470.      ' STATE BEFORE THIS SUB WAS CALLED.
  1471.  
  1472.      DELWIND 1
  1473.      RSTRWIND 15, 1
  1474.  
  1475.  
  1476.  
  1477. END SUB
  1478.  
  1479. SUB PRINTSPEED (WIND%)
  1480.  
  1481.    RSTRINFO 0                          ' RESTORE AREA UNDER INFO-LINE.
  1482.    A% = COL%(113)                      ' COLOR PURPLE/GRAY OR B/W.
  1483.  
  1484.    ' MAKE WINDOW #1
  1485.    MAKEWIND 1, "", 100, 100, 67, 6, A%, 12
  1486.    LINEW 2, 1
  1487.  
  1488.    IF WIND% = 3 THEN                   ' SLOW PRINT WAS SELECTED.
  1489.       FAST% = 0                        ' SHARED VARIABLE.
  1490.       PRINTW "** Print speed is set to SLOW **", 1, 100
  1491.       PRINTW "Windowing and print speed are set to fast.  This may cause snow", 3, 2
  1492.       PRINTW "or screen flicker if certain  CGA display adaptors are used....", 4, 2
  1493.  
  1494.    ELSE                                ' FAST PRINT WAS SELECTED.
  1495.       FAST% = 1                        ' SHARED VARIABLE.
  1496.       PRINTW "** Print speed is set to FAST **", 1, 100
  1497.       PRINTW "Windowing and print speed are set to slow if a CGA display ad-", 3, 2
  1498.       PRINTW "aptor is present.  This will eliminate screen snow or flicker.", 4, 2
  1499.    END IF
  1500.  
  1501.    ' WAIT FOR ANY KEY.  RESTORE AREA UNDER WINDOW #1.  CALL SETPARAMETERS
  1502.    ' TO CHANGE PRINT SPEED AND ENABLE AND DISABLE PULLDOWN SELECTIONS.
  1503.  
  1504.    A% = A% + 128
  1505.    GETANS "Press any key.......", "", "", 15, 28, A%, 12
  1506.    RSTRWIND 1, 1
  1507.    CALL SETPARAMETERS                    ' USES SHARED VARIABLE, FAST% TO
  1508.                                          ' CHAGE PRINT SPEED.
  1509. END SUB
  1510.  
  1511. SUB SCROLLDEMO (WASESC%)
  1512.  
  1513.    WASESC% = 0                                  ' WARNS CALLER ESC EXITED.
  1514.    A% = COL%(113): IF A% = 15 THEN A% = 112     ' BLUE/WHITE OR B/W
  1515.  
  1516.    ' MAKE A SCROLL WINDOW TO SELECT THE TYPE OF SCROLL WINDOW.
  1517.  
  1518.    CALL MAKEWIND(4, "", 5, 37, 38, 7, A%, 11)
  1519.    SCROLLRTRN% = 1
  1520.    ' SAME INFO-LINE FOR ALL SELECTIONS.
  1521.    INFOFIXED " Pick a scroll window!"
  1522.    IF A% = 112 THEN HATTR% = 127 ELSE HATTR% = 124
  1523.    CALL SCRLWIND(SUBSCROLL$(), DUMMY$(), "", 5, "A", SCROLLRTRN%, 1, 1, RKEY%, HATTR%)
  1524.    INFOFIXED ""
  1525.    RSTRWIND 4, 1                              ' RESTORE SCROLL WINDOW.
  1526.    IF RKEY% = 27 THEN WASESC% = 1: EXIT SUB   ' ESC
  1527.    RSTRWIND 2, 1                              ' RESTORE CONNECT SOFTWARE WIND.
  1528.    RSTRWIND 1, 1                              ' RESTORE MAIN INSTRUCT. WIND.
  1529.    RSTRPULL 1                                 ' RESTORE PULLDOWN WINDOW.
  1530.    SELECT CASE SCROLLRTRN%
  1531.      CASE 1                                   ' REGULAR SCROLL WINDOW PICKED
  1532.        OPT$ = "REGULAR SCROLL WINDOW"
  1533.      CASE 2                                   ' AUTO-EXIT  PICKED
  1534.        KIND$ = "A"
  1535.        OPT$ = "AUTO-EXIT SCROLL WINDOW"
  1536.      CASE 3                                   ' MARK PICKED
  1537.        KIND$ = "M": MARK% = 1
  1538.        OPT$ = "MARK SCROLL WINDOW"
  1539.      CASE 4, 5                                ' VIRTUAL OR LIST PICKED
  1540.  
  1541.        ' TITLE FOR VIRTUAL OR LIST SCROLL WINDOWS
  1542.        TL$ = "NAME                    ADDRESS               CITY          ST.   ZIP"
  1543.        IF SCROLLRTRN% = 4 THEN TYP$ = "" ELSE TYP$ = "L"
  1544.      CASE ELSE
  1545.    END SELECT
  1546.  
  1547.    ' MAKE THE SCROLL WINDOW PICKED.
  1548.    A% = COL(23): IF A% = 15 THEN HIATTR% = 15 ELSE HIATTR% = 31
  1549.    MAKEWIND 2, "@" + OPT$, 4, 100, 40, 10, A%, 121
  1550.    RTRN% = 0
  1551.    IF A% = 15 THEN NEWCOLOR 7
  1552.  
  1553.    IF SCROLLRTRN% = 4 OR SCROLLRTRN% = 5 THEN
  1554.      ' VIRTUAL OR LIST SCROLL WINDOW
  1555.      IF TYP$ = "L" THEN
  1556.          M$ = "[ ESC exits ]"
  1557.          B4SCRL "E", ""                         ' ESC WILL EXIT SCRLWIND
  1558.      ELSE
  1559.          M$ = "[ ENTER or ESC exits ]"
  1560.      END IF
  1561.      PRINTW M$, 7, 100
  1562.      INFOFIXED " LOOK!  You may scroll UP, DOWN, LEFT and RIGHT.  Try TAB or SHIFT/TAB also!"
  1563.      SCRLWIND ADDRESS$(), DUMMY$(), TL$, 10, TYP$, RTRN%, 1, 1, RKEY%, 0
  1564.    ELSE
  1565.      ' ALL OTHER SCROLL WINDOWS.  KIND$ DEFINES THE TYPE.
  1566.      INFOFIXED " Demonstration: " + OPT$ + ". Instuctions are in the scroll window!"
  1567.      SCRLWIND SCROLL$(), DUMMY$(), "", 14, KIND$, RTRN%, 1, 1, RKEY%, HIATTR%
  1568.    END IF
  1569.    INFOFIXED ""
  1570.    IF RKEY% = 27 GOTO DONESCROLL                 ' ESC
  1571.  
  1572.    IF MARK% = 1 THEN                             ' WAS A MARK SCROLL WINDOW
  1573.       TR% = 4: NR% = 18: TEXT$ = "@** THE MARKED ITEM(S) WERE: **"
  1574.       RSTRWIND 2, 1
  1575.    ELSE                                          ' ALL EXCEPT MARK.
  1576.       TR% = 17: NR% = 5: TEXT$ = "@The item selected was:"
  1577.    END IF
  1578.  
  1579.    ' PRINT RESULTS
  1580.    MAKEWIND 3, TEXT$, TR%, 100, 40, NR%, A%, 121
  1581.    IF MARK% = 1 THEN                      ' PRINT "MARKED" SELECTIONS
  1582.       IF KIND$ = "" THEN
  1583.          PRINTW "NO ITEMS WERE MARKED!", 8, 100
  1584.       ELSE
  1585.          TR% = 1: START% = 1              ' START SEARCH AT POSITION 1
  1586.          DO
  1587.            B% = MARKED%(KIND$, START%)    ' B%= MARKED ITEM # IN SCROLL$()
  1588.            IF B% <> 0 THEN
  1589.               S$ = SCROLL$(B%): GOSUB NEWSTR: PRINTW S$, TR%, 2
  1590.            ELSE
  1591.               EXIT DO
  1592.            END IF
  1593.            TR% = TR% + 1
  1594.          LOOP
  1595.       END IF
  1596.    ELSE
  1597.       S$ = SCROLL$(RTRN%): GOSUB NEWSTR
  1598.       IF SCROLLRTRN% = 4 THEN S$ = RTRIM$(LEFT$(ADDRESS$(RTRN%), 22)) + "...."
  1599.       PRINTW S$, 1, 100
  1600.    END IF
  1601.    GETANS "[ Press any key ]", "", "", 21, 100, 240, 0
  1602.    RSTRWIND 3, 1
  1603. DONESCROLL:
  1604.    RSTRWIND 2, 1
  1605.    EXIT SUB
  1606.  
  1607. NEWSTR:
  1608.    SA% = INSTR(S$, "@")
  1609.    IF SA% THEN S$ = LEFT$(S$, SA% - 1) + MID$(S$, SA% + 1)
  1610. RETURN
  1611.  
  1612. END SUB
  1613.  
  1614. SUB SETDATEDEMO
  1615.  
  1616.    ' MAKE A SCROLL WINDOW. USE SHARED ARRAY DATETYPE$() FOR THE CHOICES.
  1617.    ' AS SHARED ARRAY DUMMY$ WAS DIMENSIONED TO 0, SAME INFO-LINE WILL
  1618.    ' PRINT FOR ALL SELECTIONS.
  1619.  
  1620.    A% = COL%(23)
  1621.    MAKEWIND 3, "@Format", 100, 100, 14, 9, A%, 112
  1622.    PRETYPE% = DFORMAT%
  1623.    INFOFIXED " DIRECTIONS: Select date format for input routines."
  1624.    SCRLWIND DATETYPE$(), DUMMY$(), "", 5, "", DFORMAT%, DFORMAT%, 1, RKEY%, 0
  1625.    INFOFIXED ""
  1626.    RSTRWIND 3, 1                           ' RESTORE THE SCROLL WINDOW AND
  1627.    RSTRINFO 0                              ' THE INFO-LINE.
  1628.    IF RKEY% = 27 THEN                      ' ESC EXITED
  1629.       DFORMAT% = PRETYPE%
  1630.    ELSE
  1631.       ' DISPLAY SELECTION VIA GETANS.
  1632.       ' CALL INPTINIT TO CHANGE DATE FROMAT FOR INPUT ROUTINES.
  1633.       GETANS "DATE FORMAT FOR INPUT ROUTINES IS: " + DATETYPE$(DFORMAT%) + "  --  Press any key....", "", "", 100, 100, A%, 11
  1634.       CALL INPTINIT(DFORMAT%, DECPOINT%, "")
  1635.    END IF
  1636.  
  1637. END SUB
  1638.  
  1639. SUB SETPARAMETERS
  1640.  
  1641.   SETWIND FAST%, SND%, SHADCOL%
  1642.   SETSCRL SCROLLARROW%, NOHI%, 15
  1643.  
  1644.   IF DEMOATTR% = 112 THEN A% = 112 ELSE A% = 120
  1645.  
  1646.   ' DISABLE OR DISABLE PULLDOWN SELECTION FOR FAST OR SLOW PRINT.
  1647.   IF FAST% = 1 THEN W% = 4: W1% = 3 ELSE W% = 3: W1% = 4
  1648.   CHNGPULL 3, W%, A%             ' DISABLE
  1649.   CHNGPULL 3, W1%, 0             ' ENABLE .
  1650.  
  1651.   ' DISABLE OR ENABLE PULLDOWN SELECTION FOR BEEP/CLICK/NO SOUND
  1652.   IF SND% = 1 THEN W% = 2 ELSE IF SND% = 2 THEN W% = 1 ELSE W% = 3
  1653.   FOR X% = 1 TO 3
  1654.     IF X% = W% THEN B% = A% ELSE B% = 0
  1655.     CHNGPULL 6, X%, B%
  1656.   NEXT
  1657.  
  1658.   ' DISABLE OR ENABLE SELECTION FOR COLOR OR B/W
  1659.   IF NOHI% = 1 THEN W% = 3 ELSE IF SHADCOL% = 8 THEN W% = 2 ELSE W% = 1
  1660.   FOR X% = 1 TO 3
  1661.     IF X% = W% THEN B% = A% ELSE B% = 0
  1662.     CHNGPULL 5, X%, B%
  1663.   NEXT
  1664.  
  1665. END SUB
  1666.  
  1667. SUB SOUNDDEMO (WIND%)
  1668.  
  1669.    ' SND% IS SHARED VARIABLE
  1670.  
  1671.    RSTRINFO 0                      ' RESTORE AREA UNDER INFO-LINE.
  1672.    SELECT CASE WIND%
  1673.       CASE 1                       ' "BEEP" SELECTED FROM PULLDOWN WINDOW.
  1674.          B$ = "BEEP": SND% = 2
  1675.       CASE 2                       ' "CLICK" SELECTED.
  1676.          B$ = "CLICK": SND% = 1
  1677.       CASE 3                       ' "OFF" SELECTED
  1678.          B$ = "OFF": SND% = 0
  1679.       CASE ELSE
  1680.     END SELECT
  1681.  
  1682.     CALL SETPARAMETERS             ' USES SHARED VARIABLE SND% TO SET SOUND.
  1683.     A% = COL%(23)                  ' COLOR BLUE/GRAY OR B/W.
  1684.  
  1685.     ' PRINT MESSAGE AND WAIT FOR ANY KEY TO BE PRESSED
  1686.     GETANS "The sound for all routines is set to " + B$ + ".  Press any key.....", "", "", 100, 100, A%, 11
  1687.  
  1688. END SUB
  1689.  
  1690.